<?php
//生成验证码图片
ob_clean();
Header("Content-type: image/PNG");

srand((double)microtime()*1000000);

$roundNum=rand(1000,9999);

//把随机数存入session以便以后用

$_SESSION["sessionRound"]=$roundNum;

$im = imagecreate(58,28);

$red = ImageColorAllocate($im, 255,0,0);

$blue = ImageColorAllocate($im, 0,255,0);

//局域填充，相当于背景

imagefill($im,68,30,$red);

//将四位整数验证码绘入图片

imagestring($im, 5, 10, 8, $roundNum, $blue);

for($i=0;$i<50;$i++)   //加入干扰象素

{

	imagesetpixel($im, rand()%70 , rand()%30 , 1231);

}

ImagePNG($im);

ImageDestroy($im);

/*
 * 2---一般验证码

text.php

<?

//checkNum.php

session_start();

function random($len)

{

$srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

mt_srand();

$strs="";

for($i=0;$i<$len;$i++){

$strs.=$srcstr[mt_rand(0,35)];

}

return strtoupper($strs);

}

$str=random(4); //随机生成的字符串

$width = 50; //验证码图片的宽度

$height = 25; //验证码图片的高度

@header("Content-Type:image/png");

$_SESSION["code"] = $str;

//echo $str;

$im=imagecreate($width,$height);

//背景色

$back=imagecolorallocate($im,0xFF,0xFF,0xFF);

//模糊点颜色

$pix=imagecolorallocate($im,187,230,247);

//字体色

$font=imagecolorallocate($im,41,163,238);

//绘模糊作用的点

mt_srand();

for($i=0;$i<1000;$i++)

{

imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);

}

imagestring($im, 5, 7, 5,$str, $font);

imagerectangle($im,0,0,$width-1,$height-1,$font);

imagepng($im);

imagedestroy($im);

$_SESSION["code"] = $str;

?>

引用

<?php

session_start();

echo "<img src=text.php border=0 align=absbottom>";//生成图片

?>

3----一般简单

<?

session_start();

function img(){

$im=imagecreate(50,20);

$white=imagecolorallocate($im,255,255,255);

$black=imagecolorallocate($im,0,0,0);

imagerectangle($im,0,0,49,19,$black);

$temp=0;

$temp3="";

$_SESSION["img"] = null;

for ($i=1;$i<5;$i++){

$temp1=rand(0,9);

$temp3=$temp3.strval($temp1);

$color1=rand(0,255);

$color2=rand(0,255);

$color3=rand(0,255);

$color=imagecolorallocate($im,$color1,$color2,$color3);

imagechar($im,16,5+$temp,2,$temp1,$color);

$temp=$temp+10;

for ($j=0;$j<15;$j++){

$point_x=rand(2,48);

$point_y=rand(2,18);

$color=imagecolorallocate($im,$color1,$color2,$color3);

imagesetpixel($im,$point_x,$point_y,$color);

}

}

$_SESSION["img"]=$temp3;

imagegif($im);

imagedestory($im);

}

img();

?>

4---一般验证码

<?

Header("Content-type:image/png");

//定义header，声明图片文件，最好是png，无版权之扰;

//生成新的四位整数验证码

session_start();//开启session;

$authnum_session = '';

$str = 'abcdefghijkmnpqrstuvwxyz1234567890';

//定义用来显示在图片上的数字和字母;

$l = strlen($str); //得到字串的长度;

//循环随机抽取四位前面定义的字母和数字;

for($i=1;$i<=4;$i++)

{

$num=rand(0,$l-1);

//每次随机抽取一位数字;从第一个字到该字串最大长度,

//减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;

$authnum_session.= $str[$num];

//将通过数字得来的字符连起来一共是四位;

}

session_register("authnum_session");

//用session来做验证也不错;注册session,名称为authnum_session,

//其它页面只要包含了该图片

//即可以通过$_SESSION["authnum_session"]来调用

//生成验证码图片，

srand((double)microtime()*1000000);

$im = imagecreate(50,20);//图片宽与高;

//主要用到黑白灰三种色;

$black = ImageColorAllocate($im, 0,0,0);

$white = ImageColorAllocate($im, 255,255,255);

$gray = ImageColorAllocate($im, 200,200,200);

//将四位整数验证码绘入图片

imagefill($im,68,30,$gray);

//如不用干扰线，注释就行了;

$li = ImageColorAllocate($im, 220,220,220);

for($i=0;$i<3;$i++)

{//加入3条干扰线;也可以不要;视情况而定，因为可能影响用户输入;

imageline($im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),$li);

}

//字符在图片的位置;

imagestring($im, 5, 8, 2, $authnum_session, $white);

for($i=0;$i<90;$i++)

{//加入干扰象素

imagesetpixel($im, rand()%70 , rand()%30 , $gray);

}

ImagePNG($im);

ImageDestroy($im);

?>

 

5---一般偏上

text.php

<?php

//需GD库支持

session_start();

session_register("login_check_number");

//先成生背景，再把生成的验证码放上去

//先定义图片的长、宽

$img_height=60;

$img_width=20;

if($_GET["act"]== "init")

{

    for($Tmpa=0;$Tmpa<4;$Tmpa++)

 {

        $nmsg.=dechex(rand(0,15)); // 生成随机数，并转成十六进制

    }

    $_SESSION[login_check_number] = $nmsg;

    $aimg = imageCreate($img_height,$img_width); //生成图片

    ImageColorAllocate($aimg, 255,255,255); //图片底色，ImageColorAllocate第1次定义颜色PHP就认为是底色了

    $black = ImageColorAllocate($aimg, 0,0,0); //定义需要的黑色

    ImageRectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//先成一黑色的矩形把图片包围

    //下面该生成雪花背景了，其实就是在图片上生成一些符号

    for ($i=1; $i<=100; $i++)//先用100个做测试

 {

        imageString($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"*",imageColorAllocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));

        //就是生成＊号而已。为了使它们看起来"杂乱无章、5颜6色"，就得在1个1个生成它们的时候，让它们的位置、颜色，甚至大小都用随机数，rand()或mt_rand都可以完成。

    }

    //上面生成了背景，现在就该把已经生成的随机数放上来了。道理和上面差不多，随机数1个1个地放，同时让他们的位置、大小、颜色都用成随机数~~

    //为了区别于背景，这里的颜色不超过200，上面的不小于200

    for ($i=0;$i<strlen($_SESSION[login_check_number]);$i++)

 {

        imageString($aimg, mt_rand(3,5),$i*$img_height/4+mt_rand(1,10),mt_rand(1,$img_width/4), $_SESSION[login_check_number][$i],imageColorAllocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));

    }

    Header("Content-type: image/png"); //告诉浏览器，下面的数据是图片，而不要按文字显示

    ImagePng($aimg); //生成png格式

    ImageDestroy($aimg);

}

?>

调用

<html>

<body>

<img src="text.php?act=init"/>

</body>

</html>

$_SESSION[login_check_number])就是图片上的值

 

6-------一般

<?php

//生成验证码图片

Header("Content-type: image/PNG");

srand((double)microtime()*1000000);//播下一个生成随机数字的种子，以方便下面随机数生成的使用

session_start();//将随机数存入session中

$_SESSION['authnum']="";

$im = imagecreate(62,20); //制定图片背景大小

$black = ImageColorAllocate($im, 0,0,0); //设定三种颜色

$white = ImageColorAllocate($im, 255,255,255);

$gray = ImageColorAllocate($im, 200,200,200);

imagefill($im,0,0,$gray); //采用区域填充法，设定（0,0）

while(($authnum=rand()%100000)<10000);

//将四位整数验证码绘入图片

$_SESSION['authnum']=$authnum;

imagestring($im, 5, 10, 3, $authnum, $black);

// 用 col 颜色将字符串 s 画到 image 所代表的图像的 x，y 座标处（图像的左上角为 0, 0）。

//如果 font 是 1，2，3，4 或 5，则使用内置字体

for($i=0;$i<200;$i++) //加入干扰象素

{

$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));

imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);

}

ImagePNG($im);

ImageDestroy($im);

?>

7-----中文验证码

<?php

Header("Content-type: image/PNG");

$str = "的一是在了不和有大这主中人上为们地个用工时要动国产以我到他会作来分生对于学下级就年阶义发成部民可出能方进同行面说种过命度革而多子后自社加小机也 经力线本电高量长党得实家定深法表着水理化争现所二起政三好十战无农使性前等反体合斗路图把结第里正新开论之物从当两些还天资事队批如应形想制心样干都向 变关点育重其思与间内去因件日利相由压员气业代全组数果期导平各基或月毛然问比展那它最及外没看治提五解系林者米群头意只明四道马认次文通但条较克又公孔 领军流入接席位情运器并飞原油放立题质指建区验活众很教决特此常石强极土少已根共直团统式转别造切九你取西持总料连任志观调七么山程百报更见必真保热委手 改管处己将修支识病象几先老光专什六型具示复安带每东增则完风回南广劳轮科北打积车计给节做务被整联步类集号列温装即毫知轴研单色坚据速防史拉世设达尔场 织历花受求传口断况采精金界品判参层止边清至万确究书术状厂须离再目海交权且儿青才证低越际八试规斯近注办布门铁需走议县兵固除般引齿千胜细影济白格效置 推空配刀叶率述今选养德话查差半敌始片施响收华觉备名红续均药标记难存测士身紧液派准斤角降维板许破述技消底床田势端感往神便贺村构照容非搞亚磨族火段算 适讲按值美态黄易彪服早班麦削信排台声该击素张密害侯草何树肥继右属市严径螺检左页抗苏显苦英快称坏移约巴材省黑武培著河帝仅针怎植京助升王眼她抓含苗副 杂普谈围食射源例致酸旧却充足短划剂宣环落首尺波承粉践府鱼随考刻靠够满夫失包住促枝局菌杆周护岩师举曲春元超负砂封换太模贫减阳扬江析亩木言球朝医校古 呢稻宋听唯输滑站另卫字鼓刚写刘微略范供阿块某功套友限项余倒卷创律雨让骨远帮初皮播优占死毒圈伟季训控激找叫云互跟裂粮粒母练塞钢顶策双留误础吸阻故寸 盾晚丝女散焊功株亲院冷彻弹错散商视艺灭版烈零室轻血倍缺厘泵察绝富城冲喷壤简否柱李望盘磁雄似困巩益洲脱投送奴侧润盖挥距触星松送获兴独官混纪依未突架 宽冬章湿偏纹吃执阀矿寨责熟稳夺硬价努翻奇甲预职评读背协损棉侵灰虽矛厚罗泥辟告卵箱掌氧恩爱停曾溶营终纲孟钱待尽俄缩沙退陈讨奋械载胞幼哪剥迫旋征槽倒 握担仍呀鲜吧卡粗介钻逐弱脚怕盐末阴丰编印蜂急拿扩伤飞露核缘游振操央伍域甚迅辉异序免纸夜乡久隶缸夹念兰映沟乙吗儒杀汽磷艰晶插埃燃欢铁补咱芽永瓦倾阵 碳演威附牙芽永瓦斜灌欧献顺猪洋腐请透司危括脉宜笑若尾束壮暴企菜穗楚汉愈绿拖牛份染既秋遍锻玉夏疗尖殖井费州访吹荣铜沿替滚客召旱悟刺脑措贯藏敢令隙炉 壳硫煤迎铸粘探临薄旬善福纵择礼愿伏残雷延烟句纯渐耕跑泽慢栽鲁赤繁境潮横掉锥希池败船假亮谓托伙哲怀割摆贡呈劲财仪沉炼麻罪祖息车穿货销齐鼠抽画饲龙库 守筑房歌寒喜哥洗蚀废纳腹乎录镜妇恶脂庄擦险赞钟摇典柄辩竹谷卖乱虚桥奥伯赶垂途额壁网截野遗静谋弄挂课镇妄盛耐援扎虑键归符庆聚绕摩忙舞遇索顾胶羊湖钉 仁音迹碎伸灯避泛亡答勇频皇柳哈揭甘诺概宪浓岛袭谁洪谢炮浇斑讯懂灵蛋闭孩释乳巨徒私银伊景坦累匀霉杜乐勒隔弯绩招绍胡呼痛峰零柴簧午跳居尚丁秦稍追梁折 耗碱殊岗挖氏刃剧堆赫荷胸衡勤膜篇登驻案刊秧缓凸役剪川雪链渔啦脸户洛孢勃盟买杨宗焦赛旗滤硅炭股坐蒸凝竟陷枪黎救冒暗洞犯筒您宋弧爆谬涂味津臂障褐陆啊 健尊豆拔莫抵桑坡缝警挑污冰柬嘴啥饭塑寄赵喊垫康遵牧遭幅园腔订香肉弟屋敏恢忘衣孙龄岭骗休借丹渡耳刨虎笔稀昆浪萨茶滴浅拥穴覆伦娘吨浸袖珠雌妈紫戏塔锤 震岁貌洁剖牢锋疑霸闪埔猛诉刷狠忽灾闹乔唐漏闻沈熔氯荒茎男凡抢像浆旁玻亦忠唱蒙予纷捕锁尤乘乌智淡允叛畜俘摸锈扫毕璃宝芯爷鉴秘净蒋钙肩腾枯抛轨堂拌爸 循诱祝励肯酒绳穷塘燥泡袋朗喂铝软渠颗惯贸粪综墙趋彼届墨碍启逆卸航雾冠丙街莱贝辐肠付吉渗瑞惊顿挤秒悬姆烂森糖圣凹陶词迟蚕亿矩";

$imgWidth = 140;

$imgHeight = 40;

$authimg = imagecreate($imgWidth,$imgHeight);

$bgColor = ImageColorAllocate($authimg,255,255,255);

$fontfile = "heiti.ttf";

$white=imagecolorallocate($authimg,234,185,95);

imagearc($authimg, 150, 8, 20, 20, 75, 170, $white);

imagearc($authimg, 180, 7,50, 30, 75, 175, $white);

imageline($authimg,20,20,180,30,$white);

imageline($authimg,20,18,170,50,$white);

imageline($authimg,25,50,80,50,$white);

$noise_num = 800;

$line_num = 20;

imagecolorallocate($authimg,0xff,0xff,0xff);

$rectangle_color=imagecolorallocate($authimg,0xAA,0xAA,0xAA);

$noise_color=imagecolorallocate($authimg,0x00,0x00,0x00);

$font_color=imagecolorallocate($authimg,0x00,0x00,0x00);

$line_color=imagecolorallocate($authimg,0x00,0x00,0x00);

for($i=0;$i<$noise_num;$i++){

 imagesetpixel($authimg,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$noise_color);

}

for($i=0;$i<$line_num;$i++){

 imageline($authimg,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$line_color);

}

$randnum=rand(0,strlen($str)-4);

if($randnum%2)$randnum+=1;

$str = substr($str,$randnum,8);

$str = iconv("GB2312","UTF-8",$str);

ImageTTFText($authimg, 20, 0, 16, 30, $font_color, $fontfile, $str);

ImagePNG($authimg);

ImageDestroy($authimg);

?>*/